import store from "~/store";
// 判断vuex里面ruleNames数组是否有这个权限别名
function hasPermission(value, el = false) {
  // 判断binding.value是否是一个数组，不是就报错
  if (!Array.isArray(value)) {
    throw new Error(
      `需要配置权限，例如: v-permission="['getStatistics3,GET']"`,
    );
  }

  // hasAuth为布尔值 true有权限 false无权限
  // includes方法用于判断某数组是否包含某个元素，包含返回true，否则返回false
  const hasAuth =
    value.findIndex((v) => store.state.ruleNames.includes(v)) != -1;

  if (el && !hasAuth) {
    // 节点传过来，但是没有这个权限
    // 移除子节点
    el.parentNode && el.parentNode.removeChild(el);
  }
  return hasAuth;
}

export default {
  install(app) {
    // 参数1就是const app=createApp(App)的app
    // console.log("参数1：",app);
    app.directive("permission", {
      mounted(el, binding) {
        // console.log(el,binding);
        hasPermission(binding.value, el);
      },
    });
  },
};
